package com.bai.localshop.service;

import com.bai.localshop.pojo.dto.VoucherQueryDTO;
import com.bai.localshop.pojo.dto.VoucherSaveDTO;
import com.bai.localshop.pojo.dto.VoucherUpdateDTO;
import com.bai.localshop.pojo.dto.VoucherUpdateStatusDTO;
import com.bai.localshop.pojo.vo.UserVoucherQueryVO;
import com.bai.localshop.pojo.vo.VoucherVO;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;

/**
 * 代金券服务接口
 */
public interface VoucherService {

    /**
     * 分页查询代金券
     */
    <T> IPage<T> pageQuery(VoucherQueryDTO requestParam, Class<T> voClass);

    /**
     * 根据ID查询代金券
     */
    VoucherVO getById(Long id);

    /**
     * 保存代金券
     */
    void save(VoucherSaveDTO requestParam);

    /**
     * 更新代金券
     */
    void update(VoucherUpdateDTO requestParam);

    /**
     * 删除代金券
     */
    void deleteById(Long id);

    /**
     * 更新代金券状态
     */
    void updateStatus(VoucherUpdateStatusDTO requestParam);

    /**
     * 判断是否上架
     * @return
     */
    Boolean isOnline(Long id);

    /**
     * 查询已上架的优惠券
     * @return
     */
    List<UserVoucherQueryVO> queryVoucher();

}